// 给定一个全部由小写字母组成的字符串S，重复的删除相邻且相同的字母，直到相邻字母不再有相同的
// 思路，堆栈
// 每轮遍历判断栈顶和当前元素是否相等，如果相等则出栈，直到栈顶不等于当前元素
function removeDuplicates(S) {
    let stack = []
    for (let i = 0; i < S.length; i++) {
        if (stack.length && stack[stack.length - 1] === S[i]) {
            stack.pop()
        } else {
            stack.push(S[i])
        } 
    }
    return stack.join('')
}

let S = "abbaca"
console.log(removeDuplicates(S))